/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package controle;

import dao.usuario.JPAUsuarioDao;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import modelo.Usuario;

/**
 *
 * @author Thuan
 */

@ManagedBean(name = "beanUsuario")
@SessionScoped
public class UsuarioBean {
    
    private Usuario usuario;
    private List<Usuario> listaUsuarios;
    private List<Usuario> listaUsuariosRanking;
    private JPAUsuarioDao dao;
    
    public UsuarioBean() {
        this.usuario = new Usuario();
        dao = new JPAUsuarioDao();
        this.listaUsuarios = dao.listarTodos();
    }

    public String novo() {
        this.usuario = new Usuario();
        return "/usuario/cadastro";
    }

    public String salvar() {
        
       try{
            if (this.usuario.getId() == 0){ 
                dao.incluir(usuario);
            }else{
                dao.alterar(usuario);
            }
            
            FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_INFO,
                        "Usuário salvo com sucesso", ""));
            
            this.usuario = new Usuario();
            //listaUsuarios = dao.listarTodos();
            return "/usuario/consulta";
        
        }catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Erro ao Salvar usuário", e.getMessage()));
            return "/usuario/consulta";
        }
            
    }

    public String excluir() {
        
        try{
            dao.excluir(usuario);
            
            FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_INFO,
                        "Usuário excluido com sucesso", ""));
            
            this.usuario = new Usuario();
            listaUsuarios = dao.listarTodos();
            return "/usuario/consulta";
        
        }catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null,
                new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Erro ao excluir usuário", e.getMessage()));
            return "/usuario/consulta";
        }
        
    }
    
    public String alterar(Usuario usuario) {
        this.usuario = usuario;
        return "/usuario/cadastro";
    }

    public String cancelar() {
        return "/usuario/consulta";
    }
    
    public String paginaIncial(){
        return "/index";
    }

    public int proxId() {
        int id = 0;
        for (Usuario u : listaUsuarios) {
            if (u.getId() > id) {
                id = u.getId();
            }
        }
        id++;
        return id;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public List<Usuario> getListaUsuarios() {
        return listaUsuarios = dao.buscarPorLogados();
    }
    
    public List<Usuario> getListaRanking() {
        return listaUsuariosRanking = dao.buscarPorRanking();
    }

    public void setListaUsuarios(List<Usuario> listaUsuarios) {
        this.listaUsuarios = listaUsuarios;
    }
    
    public String chamarConsulta() {
        return "/usuario/consulta";
    }
    
}
